package it.polimi.TravelDreamEAR.managedBeans;

//import it.polimi.TravelDreamEAR.ejb.sessionBeans.IstanzaBean;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.IstanzaManager;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.AmicoDTO;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.EscursioniDTO;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.IstanzaDTO;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped
public class IstanzaBean {
	
	@EJB
	private IstanzaManager istanzaManager;
	
	private IstanzaDTO istanzaDTO;
	
	private List<IstanzaDTO> istanzeDTO;
	
	private ArrayList<EscursioniDTO> listaEscursioni;
	
	private EscursioniDTO escursioneDTO;
	
	private AmicoDTO amicoDTO;
	
	private List<IstanzaDTO> istanzeAcquistate;
	
	public AmicoDTO getAmicoDTO() {
		return amicoDTO;
	}

	public void setAmicoDTO(AmicoDTO amicoDTO) {
		this.amicoDTO = amicoDTO;
		this.amicoDTO.setCodiceFiscale(amicoDTO.getCodiceFiscale());
	}

	public IstanzaBean() {
		this.istanzaDTO = new IstanzaDTO();
		this.istanzeDTO = new ArrayList<IstanzaDTO>();
		this.listaEscursioni = new ArrayList<EscursioniDTO>();
		this.escursioneDTO = new EscursioniDTO();
		this.amicoDTO = new AmicoDTO();
	}
	
	public EscursioniDTO getEscursioneDTO() {
		return escursioneDTO;
	}

	public void setEscursioneDTO(EscursioniDTO escursioneDTO) {
		this.escursioneDTO = escursioneDTO;
	}

	public List<EscursioniDTO> getListaEscursioni() {
		this.listaEscursioni = (ArrayList<EscursioniDTO>) istanzaManager.getEscursioni(this.istanzaDTO);
		return this.listaEscursioni;
	}

	public void setListaEscursioni() {
		this.listaEscursioni = (ArrayList<EscursioniDTO>) istanzaManager.getEscursioni(this.istanzaDTO);
	}

	public IstanzaDTO getIstanzaDTO() {
		return istanzaDTO;
	}

	public void setIstanzaDTO(IstanzaDTO istanzaDTO) {
		this.istanzaDTO = istanzaDTO;
	}
	
	public String getId(){
		return this.istanzaDTO.getId();
	}
	
	public String getDataArrivo(){
		return this.istanzaDTO.getDataArrivo();
	}
	
	public String getDataPartenza(){
		return this.istanzaDTO.getDataPartenza();
	}
	
	public String getDestinazione(){
		return this.istanzaDTO.getDestinazione();
	}
	
	public int getPrezzo(){
		return this.istanzaDTO.getPrezzo();
	}
	
	public List<IstanzaDTO> getIstanzeDTO() {
		setIstanzeDTO();
		return istanzeDTO;
	}

	public void setIstanzeDTO() {
		this.istanzeDTO = istanzaManager.ricercaIstanze();
	}
	
	public List<IstanzaDTO> getIstanzeAcquistate() {
		setIstanzeAcquistate();
		return istanzeAcquistate;
	}

	public void setIstanzeAcquistate() {
		this.istanzeAcquistate = istanzaManager.istanzeAcquistate();
	}

	public String ricerca(){
		
    	FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("PartnerManagementBean");
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("PartnerManagementBean", new IstanzaBean());
        this.istanzaDTO = istanzaManager.ricercaIstanza(this.istanzaDTO);
		if(!this.istanzaDTO.getId().equals("-1"))
			return "partecipaIstanza.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String escursioni(){
		this.listaEscursioni = (ArrayList<EscursioniDTO>) istanzaManager.getEscursioni(this.istanzaDTO);
		if (this.listaEscursioni!=null)
			return "paginaEscursioni.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String modifica() {
		int esito = istanzaManager.modificaIstanza(this.istanzaDTO);
		if (esito==1)
			return "paginaPersonaleCliente.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String elimina() {
		int esito = istanzaManager.eliminaIstanza(this.istanzaDTO);
		if (esito==1)
			return "paginaPersonaleCliente.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String aggiungiEscursione(){
		int esito = istanzaManager.addEscursione(this.istanzaDTO, this.escursioneDTO);
		if (esito==1)
			return "paginaEscursioni.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String eliminaEscursione(){
		int esito = istanzaManager.deleteEscursione(this.istanzaDTO, this.escursioneDTO);
		if (esito==1)
			return"paginaEscursioni.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String partecipa(){
		int esito = istanzaManager.partecipaIstanza(this.istanzaDTO, this.amicoDTO);
		if(esito==1)
			return "paginaPacchetti.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String acquista(){
		int esito = istanzaManager.acquistaIstanza(this.istanzaDTO);
		if(esito==1)
			return "paginaIstanze.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
}
